{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "24489ac6-a30e-40f8-a12d-a85c7487be84",
   "metadata": {},
   "source": [
    "Chapter 12\n",
    "# 有向图\n",
    "Book_6《数据有道》 | 鸢尾花书：从加减乘除到机器学习"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "4750bf57-11ed-4690-9cc6-61020ccf31aa",
   "metadata": {},
   "outputs": [],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "import networkx as nx"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "68f2adff-beac-41d4-9c6a-e9bad5e34e0b",
   "metadata": {},
   "outputs": [],
   "source": [
    "directed_G = nx.DiGraph()\n",
    "# 创建有向图的实例"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "c788870e-fdb9-4938-9059-3646913c0035",
   "metadata": {},
   "outputs": [],
   "source": [
    "directed_G.add_nodes_from(['a', 'b', 'c', 'd'])\n",
    "# 添加多个顶点"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "45f81d56-cb6b-4d0d-9f7a-40c0e8a57ccd",
   "metadata": {},
   "outputs": [],
   "source": [
    "directed_G.add_edges_from([('b','a'),\n",
    "                           ('c','b'),\n",
    "                           ('b','d'), \n",
    "                           ('d','c'),\n",
    "                           ('a','c')])\n",
    "# 增加一组有向边"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "315f9420-32ed-478a-b930-1c365098cc3e",
   "metadata": {},
   "outputs": [],
   "source": [
    "random_pos = nx.random_layout(directed_G, seed=188)\n",
    "# 设定随机种子，保证每次绘图结果一致\n",
    "\n",
    "pos = nx.spring_layout(directed_G, pos=random_pos)\n",
    "# 使用弹簧布局算法来排列图中的节点\n",
    "# 使得节点之间的连接看起来更均匀自然"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "71c4dd0b-c543-4568-bb8d-084eb1790243",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 600x600 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize = (6,6))\n",
    "nx.draw_networkx(directed_G, pos = pos, \n",
    "                 arrowsize = 28,\n",
    "                 node_size = 180)\n",
    "plt.savefig('G_D_4顶点_5边.svg')"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "9bdbe170-e398-4a95-abc8-3181dd21bbb0",
   "metadata": {},
   "source": [
    "## 属性"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "7957e9dd-05fa-4b79-a425-85b212bebca8",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "4"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "directed_G.order()\n",
    "# 图的阶"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "a934b7f4-fa2c-4fb0-9ddc-0cbe9e749bc5",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "4"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "directed_G.number_of_nodes()\n",
    "# 图的节点数"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "f3943fd7-c9c6-40e6-96c6-7f942cc24997",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "NodeView(('a', 'b', 'c', 'd'))"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "directed_G.nodes\n",
    "# 列出图的节点"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "b55977d7-b45f-4c56-b6bd-a7456087c94c",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "5"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "directed_G.size()\n",
    "# 图的大小"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "id": "847d7ec8-6d74-44d5-8374-f0b58bec9d29",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "OutEdgeView([('a', 'c'), ('b', 'a'), ('b', 'd'), ('c', 'b'), ('d', 'c')])"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "directed_G.edges\n",
    "# 列出图的边"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "id": "d70c2013-0465-4fef-870e-2d14809a8112",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "5"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "directed_G.number_of_edges()\n",
    "# 图的边数"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "id": "90f3f66b-fb8b-45a9-8b77-580be7d4c57a",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "False"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "directed_G.has_edge('a', 'b')\n",
    "# 判断是否存在ab有向边"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "id": "ef9884e1-bcfe-49c2-aedc-eca751cba363",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "True"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "directed_G.has_edge('b', 'a')\n",
    "# 判断是否存在ba有向边"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "id": "45314b55-9a79-4e56-a7aa-aae8a866815d",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "DiDegreeView({'a': 2, 'b': 3, 'c': 3, 'd': 2})"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "directed_G.degree()\n",
    "# 图的度"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "id": "33fdc54f-26c1-4d52-b9aa-ac14b8c77166",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'a': 2, 'b': 3, 'c': 3, 'd': 2}"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "dict(directed_G.degree())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "id": "7a79ec7e-7673-4745-a436-6c5acfd6e244",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "InDegreeView({'a': 1, 'b': 1, 'c': 2, 'd': 1})"
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "directed_G.in_degree()\n",
    "# 有向图的入度"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "id": "47893b3f-1e71-49c9-93e4-fa3c81adb0eb",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "OutDegreeView({'a': 1, 'b': 2, 'c': 1, 'd': 1})"
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "directed_G.out_degree()\n",
    "# 有向图的出度"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "id": "5a354c09-6b75-49a6-824a-83b6df12e507",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2"
      ]
     },
     "execution_count": 26,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "directed_G.degree('a')\n",
    "# 节点a的度"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "id": "127f690d-e250-4c85-a6b2-2808d2fb70e6",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1"
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "directed_G.in_degree('a')\n",
    "# 节点a的入度"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "id": "a1c0a4a8-8f47-4c7b-8166-457580c52f38",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1"
      ]
     },
     "execution_count": 30,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "directed_G.out_degree('a')\n",
    "# 节点a的出度"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "id": "5f6d34c1-b06a-49af-8500-f4bea3e5df5d",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1"
      ]
     },
     "execution_count": 32,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "directed_G.in_degree('b')\n",
    "# 节点b的入度"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "id": "1d26217b-b308-4bf3-a319-8145fe6e1ed3",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2"
      ]
     },
     "execution_count": 33,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "directed_G.out_degree('b')\n",
    "# 节点b的"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "8e9d167d-3b7d-446c-a827-5f42279fcf73",
   "metadata": {},
   "outputs": [],
   "source": [
    "all_neighbors"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "7f55f888-a39f-42fe-a7c1-ae6a0c2bed64",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "21956e18-a042-46ff-8d9e-386da533bddb",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "id": "c3bf55e1-7f85-48cf-8926-0d7a96ecd810",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "['b', 'c']"
      ]
     },
     "execution_count": 44,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "list(nx.all_neighbors(directed_G, 'a'))\n",
    "# 节点a所有邻居"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "id": "aed9dce2-c7a0-4400-a894-961dedf2edef",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "['c']"
      ]
     },
     "execution_count": 37,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "list(directed_G.neighbors('a'))\n",
    "# 节点a的 (出度) 邻居"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "id": "b13ae5b1-a269-4bd2-8aa4-b1ec3c960ca9",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "['c']"
      ]
     },
     "execution_count": 34,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "list(directed_G.successors('a'))\n",
    "# 节点a的出度邻居"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "id": "2a313fcc-fa93-4416-b6c9-9bf85395e7ac",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "['b']"
      ]
     },
     "execution_count": 35,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "list(directed_G.predecessors('a'))\n",
    "# 节点a的入度邻居"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "afd04e38-a726-41b2-a969-39b4d768fad0",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "49686479-3488-4246-8d50-d0615452b935",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.10.9"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
